import { _decorator, Component, Label, Sprite, SpriteAtlas } from 'cc';
import HeroPO from '../../pojo/po/HeroPO';
const { ccclass, property } = _decorator;

@ccclass('HeroPOItem')
export class HeroPOItem extends Component {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    protected _value: HeroPO = undefined!;
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    @property({ group: { name: 'PO', id: '1' }, type: Label, tooltip: `英雄名称文本组件` })
    protected nameLabel: Label = undefined!;

    @property({ group: { name: 'PO', id: '1' }, type: Sprite, tooltip: `英雄图片组件` })
    protected iconSprite: Sprite = undefined!;

    @property({ group: { name: 'PO', id: '1' }, type: Sprite, tooltip: `英雄图片图集组件` })
    protected iconAtlas: SpriteAtlas = undefined!;
    /****************************************************************************************************************
     * Lifecycle 生命周期相关方法
     ****************************************************************************************************************/
    protected onEnable(): void {
        this.updateView(this.value);
    }
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    protected updateView(value: HeroPO = this.value) {
        if (!value) { return; }
        if (!this.enabledInHierarchy) { return; }

        if (this.nameLabel) {
            this.nameLabel.string = value.name;
        }

        if (this.iconSprite && this.iconAtlas) {
            this.iconSprite.spriteFrame = this.iconAtlas.getSpriteFrame(`${value.id}`);
        }

    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/
    public get value(): HeroPO {
        return this._value;
    }
    public set value(value: HeroPO) {
        this._value = value;
        this.updateView(value);
    }
}


